
import {getSetting,chooseAddress,openSetting,showModal,showToast,requestPayment} from "../../utils/asyncWx.js"
import regeneratorRuntime from '../../lib/runtime/runtime';
import { request } from "../../request/index.js";
  
Page({

  /**
   * 页面的初始数据
   */
  data: {
    address:{},
    cart:[],
    pitch:false,
    totalPrice:0,
    totalNum:0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },
  // 显示触发的事件
  onShow(){
    // 获取缓存中的收货地址信息
    const address = wx.getStorageSync("address");
    // 获取缓存中的购物车数据
    let cart = wx.getStorageSync("cart")||[];
    //  筛选勾选的商品
    cart = cart.filter(v=>v.chek);
    this.setData({address})


     // 计算总价格和总数量
    // 总价给
    let totalPrice = 0;
    // 总数量
    let totalNum = 0;
    cart.forEach(v=>{
      if(v.chek){
        totalPrice+=v.num*v.goods_price
        totalNum+=v.num
      }
    })
   
    this.setData({
      cart,totalNum,totalPrice
    });
  },

  // 点击 支付

async  handzhifu(){
   try {
         // 1.判断缓存中有没有token
    const token = wx.getStorageSync("token")
    // 2.判断
    if(!token){
      wx.navigateTo({
        url: '/pages/auth/index',
      });
      return ;
    }
    console.log("已经存在token");
  //  3.创建订单参数
  // 3.1准备 请求头参数
  const header = {Authorization:token}
  // 3.2准备 请求体参数
  const order_price=this.data.totalPrice
  const consignee_addr= this.data.address.all;
  const cart = this.data.cart;
  let goods=[]
  cart.forEach(v=>goods.push({
      goods_id:v.goods_id,
      goods_number:v.num,
      goods_price:v.goods_price 
  }))
  const orderParams = {order_price,consignee_addr,goods};
  // 4.准备发送请求 创建订单 获取订单编号
  const {order_number}= await request({url:"/my/orders/create",method:"POST",data:orderParams,header})
  console.log(order_number)
  // 5.发起 预支付接口
  const {pay} = await request({url:"/my/orders/req_unifiedorder",method:"POST",header,data:{order_number}})
  // 6.发起微信支付
  // console.log(pay)
  await requestPayment(pay);
    //  console.log(res)
  // 7. 查询后台 订单状态
  const res = await request({url:"/my/orders/chkOrder",method:"POST",header,data:{order_number}})

  // 由于没有权限所以只是都不不能支付的
  // 剩下的支付成功的业务逻辑我放在支付失败页面进行处理
  await showToast({title:"支付成功"});
   } catch (error) {
  // 
    // 支付成功之后，要把之前购物车里面选购的商品进行删除。留下未被选购的商品
    let newCart = wx.getStorageSync("cart")
    // 进行删选
    newCart =newCart.filter(v=>!v.chek)
    wx.setStorageSync("cart",newCart)
    wx.navigateTo({
      url: '/pages/order/index',
    
    });
    await showToast({title:"支付失败"});
  
   }

  }

  

})